JSON.parse

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.10.04
조회수
21
버전
v1

JSON.parse

.parse()는 JavaScript에서 JSON(JavaScript Object Not) 형식의열을 JavaScript 객체로환하는 데 사용 내장 메서입니다. 이 메서는 웹 개발 데이터 처리 과정에서 서버로부터 받은 JSON 형식의 데이터 클라이언트 사용 가능한 객체로 변환할 핵심적인 역할을 합니다. 문서에서는 JSON.parse()의 사용법, 동작 원, 주의사항, 활용 사례 및 성능 최적화에 대해 상세히 설명합니다.

JSON은 경량의 데이터 교환 형식으로, 사람이 읽기 쉽고 기계가 파싱하기 쉬운 구조를 가지고 있습니다. 서버와 클라이언트 간의 데이터 통신에서 주로 사용되며, HTTP 응답 본문에 포함된 JSON 문자열을 JavaScript에서 사용하기 위해서는 반드시 객체로 변환해야 합니다. 이 과정을 파싱(parsing)이라고 하며, JSON.parse() 메서드가 이를 수행합니다.

const jsonString = '{"name": "김철수", "": 30, "city": "서울"}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // "김철수"

기본 문법JSON.parse()의 기본 문법은 다음과 같습니다:

JSON.parse[, reviver])

  • text: JSON 형식의 문자열로, 반드시 유효한 JSON이어야 합니다.
  • reviver (선택 사항): 파싱된 각 키-값 쌍에 대해 호출되는 함수로, 값을 변환하거나 필터링할 수 있습니다.

반환값

  • 입력된 JSON 문자열을 기반으로 생성된 JavaScript 값(객체, 배열, 숫자, 문자열, 불리언, null 등).
  • 유효하지 않은 JSON 문자열인 경우 [SyntaxError](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EC%97%90%EB%9F%AC%20%EC%B2%98%EB%A6%AC/SyntaxError)가 발생합니다.

reviver 함수 활용

reviver 함수는 JSON.parse()가 객체를 생성한 후, 각 속성에 대해 순회하면서 값을 조작할 수 있도록 해줍니다. 이는 날짜 문자열을 Date 객체로 자동 변환하거나, 특정 필드를 제거하는 데 유용합니다.

예제: 날짜 문자열을 Date 객체로 변환

const jsonString = '{"name": "이영희", "birthDate": "1990-05-20T00:00:00Z"}';

const obj = JSON.parse(jsonString, (key, value) => {
  if (key 'birthDate') {
    return new Date(value);
  }
  return value;
});

console.log(obj.birthDate instanceof Date); // true
console.log(obj.birthDate); // 1990-05-20T00:00:00.000Z

주의사항 및 에러 처리

1 유효한 JSON 형식

JSON.parse()는 엄격한 JSON 문법을 요구합니다. 예를 들어, 속성 이름과 문자열 값은 반드시 쌍따옴표(")로 감싸야 하며, 단일 따옴표(')는 허용되지 않습니다.

// ❌ 잘못된 예
JSON.parse("{'name': '홍길동'}"); // SyntaxError

// ✅ 올바른 예
JSON.parse('{"name": "홍길동"}');

2. 함수나 undefined는 포함 불가

JSON은 함수, undefined, 심볼 등을 포함할 수 없습니다. 이러한 값이 포함된 객체를 [JSON.stringify](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A7%81%EB%A0%AC%ED%99%94/JSON.stringify)()로 직렬화한 후 다시 JSON.parse()하면 해당 값은 손실됩니다.

const obj = { a: 1, b: undefined, c: function() {} };
const json = JSON.stringify(obj); // {"a":1}
const parsed = JSON.parse(json);  // { a: 1 }

3. try-catch로 예외 처리

서버로부터 받는 데이터는 신뢰할 수 없을 수 있으므로, JSON.parse() 사용 시 항상 예외 처리가 필요합니다.

let data;
try {
  data = JSON.parse(responseText);
} catch (error) {
  console.error('JSON 파싱 실패:', error.message);
  data = null;
}

활용 사례

1. AJAX 응답 처리

fetch('/api/user/1')
  .then(response => response.text())
  .then(text => {
    try {
      const user = JSON.parse(text);
      console.log(user.name);
    } catch (e) {
      console.error('응답 데이터 파싱 오류');
    }
  });

2. 로컬 스토리지에서 데이터 복원

const savedData = localStorage.getItem('userData');
if (savedData) {
  const userData = JSON.parse(savedData);
  console.log(userData);
}

성능 고려사항

  • JSON.parse()는 비교적 빠른 메서드지만, 매우 큰 JSON 문자열(예: 10MB 이상)을 파싱할 경우 브라우저가 멈출 수 있습니다.
  • 웹 워커(Web Worker)를 사용하여 메인 스레드를 차단하지 않고 파싱하는 것이 권장됩니다.
  • 대용량 데이터는 스트리밍 파서(예: [Oboe.js](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/Oboe.js))를 고려할 수 있습니다.

관련 문서 및 참고 자료

JSON.parse()는 현대 웹 개발에서 데이터 처리의 핵심 도구이며, 정확한 사용과 오류 처리를 통해 안정적인 애플리케이션 구축이 가능합니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?